home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / xpress.hu.ifs < prev    next >
Encoding:
Text File  |  2004-03-20  |  13.6 KB  |  428 lines

  1. // GETINFO SCRIPTING
  2. // Xpress.hu (HUN) import
  3.  
  4. (***************************************************
  5.  *  Movie importation script for:                  *
  6.  *      Xpress.hu (HU), http://www.xpress.hu       *
  7.  *  V1.1                                               *
  8.  *  (c) 2003 Zoltan Karpati    pinyo@gibzone.hu    *
  9.  *                                                 *
  10.  *  For use with Ant Movie Catalog 3.4.0           *
  11.  *  www.antp.be/software/moviecatalog              *
  12.  *                                                 *
  13.  *  This program is free software; you can         *
  14.  *  redistribute it and/or modify it under the     *
  15.  *  terms of the GNU General Public License as     *
  16.  *  published by the Free Software Foundation;     *
  17.  *  either version 2 of the License, or (at your   *
  18.  *  option) any later version.                     *
  19.  ***************************************************)
  20.  
  21. program xpress;
  22.  
  23. var
  24.   MovieName: string;
  25.  
  26. function GetPicFormat(PicFormat: string): String;
  27. begin
  28.     if PicFormat = '1.gif' then result := '(4:3/FF)';
  29.     if PicFormat = '2.gif' then result := '(4:3/1.54:1)';
  30.     if PicFormat = '3.gif' then result := '(4:3/1.66:1)';
  31.     if PicFormat = '4.gif' then result := '(4:3/1.78:1)';
  32.     if PicFormat = '5.gif' then result := '(4:3/1.85:1)';
  33.     if PicFormat = '6.gif' then result := '(4:3/2.35:1)';
  34.     if PicFormat = '7.gif' then result := '(16:9/1.66:1)';
  35.     if PicFormat = '8.gif' then result := '(16:9/1.78:1)';
  36.     if PicFormat = '9.gif' then result := '(16:9/1.85:1)';
  37.     if PicFormat = '10.gif' then result := '(16:9/2.35:1)';
  38.     if PicFormat = '11.gif' then result := '(16:9/2.40:1)';
  39.     if PicFormat = '12.gif' then result := '(4:3/2.40:1)';
  40.     if PicFormat = '13.gif' then result := '(4:3/PS)';
  41.     if PicFormat = '14.gif' then result := '(16:9/2.76:1)';
  42.     if PicFormat = '15.gif' then result := '(16:9/2.5:1)';
  43. end;
  44.  
  45. function Rating(Rated: string): String;
  46. begin
  47.     if ((Rated > '0') and (Rated < '5')) then result := '0';
  48.     if ((Rated >= '5') and (Rated < '15')) then result := '1';
  49.     if ((Rated >= '15') and (Rated < '25')) then result := '2';
  50.     if ((Rated >= '25') and (Rated < '35')) then result := '3';
  51.     if ((Rated >= '35') and (Rated < '45')) then result := '4';
  52.     if ((Rated >= '45') and (Rated < '55')) then result := '5';
  53.     if ((Rated >= '55') and (Rated < '65')) then result := '6';
  54.     if ((Rated >= '65') and (Rated < '75')) then result := '7';
  55.     if ((Rated >= '75') and (Rated < '85')) then result := '8';
  56.     if ((Rated >= '85') and (Rated < '95')) then result := '9';
  57.     if (Rated >= '95') then result := '10';
  58. end;
  59.  
  60. function RemoveHTML(Szoveg: string): String;
  61. begin
  62.   Szoveg := StringReplace(Szoveg, '%20', ' ');
  63.   Szoveg := StringReplace(Szoveg, '<i>', '');
  64.   Szoveg := StringReplace(Szoveg, '</i>', '');
  65.   Szoveg := StringReplace(Szoveg, '<b>', '');
  66.   Szoveg := StringReplace(Szoveg, '</b>', '');
  67.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  68.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  69.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  70.   Szoveg := StringReplace(Szoveg, '  ', ' ');
  71.   Szoveg := StringReplace(Szoveg, '<li>', chr(13)+chr(10));
  72.   Szoveg := StringReplace(Szoveg, '</p>', chr(13)+chr(10));
  73.   HTMLRemovetags(Szoveg);
  74.   HTMLDecode(Szoveg);
  75.   result := Trim(Szoveg);
  76. end;
  77.  
  78. function AddHTML(Szoveg: string): String;
  79. begin
  80.   Szoveg := StringReplace(Szoveg, ' ','%20');
  81.   result := Szoveg;
  82. end;
  83.  
  84. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  85. var
  86.   i: Integer;
  87. begin
  88.   result := -1;
  89.   if StartAt < 0 then
  90.     StartAt := 0;
  91.   for i := StartAt to List.Count-1 do
  92.     if Pos(Pattern, List.GetString(i)) <> 0 then
  93.     begin
  94.       result := i;
  95.       Break;
  96.     end;
  97. end;
  98.  
  99. procedure AnalyzePage(Address: string);
  100. var
  101.   Page: TStringList;
  102.   LineNr: Integer;
  103. begin
  104.   Page := TStringList.Create;
  105.   Page.Text := GetPage(Address);
  106.   if pos('karaktersor', Page.Text) = 0 then
  107.   begin
  108.     AnalyzeMoviePage(Page)
  109.   end else
  110.   begin
  111.     PickTreeClear;
  112.     LineNr := 0;
  113.     LineNr := FindLine('<a href="film.asp?FILMAZ=', Page, LineNr);
  114.     if LineNr > -1 then
  115.     begin
  116.       PickTreeAdd('DVD Movies', '');
  117.       AddMoviesTitles(Page, LineNr);
  118.     end;
  119.     if PickTreeExec(Address) then
  120.       AnalyzePage(Address);
  121.   end;
  122.   Page.Free;
  123. end;
  124.  
  125. procedure AnalyzeMoviePage(Page: TStringList);
  126. var
  127.   Line, Value, Value2, FullValue: string;
  128.   LineNr: Integer;
  129.   Adder: Integer;
  130.   Rate: Integer;
  131.   BeginPos, EndPos: Integer;
  132. begin
  133.  
  134.   SetField(fieldSource,'XPress.hu');
  135.   SetField(fieldMediaType, 'DVD');
  136.  
  137.   // fieldURL
  138.   LineNr := FindLine('../shop/rendel.asp?FILMID=', Page, 0);
  139.   if LineNr > -1 then
  140.   begin
  141.     Line := Page.GetString(LineNr);
  142.     BeginPos := pos('FILMID=', Line)+7;
  143.     EndPos := pos('&', Line);
  144.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  145.     SetField(fieldURL, 'http://www.xpress.hu/dvd/film.asp?FILMAZ=' + Value );
  146.   end;
  147.  
  148.   // fieldProducer  - studi≤
  149.   LineNr := FindLine('st·di≤ </font>', Page, 0);
  150.   if LineNr > -1 then
  151.   begin
  152.     Line := Page.GetString(LineNr+5);
  153.     BeginPos := pos('"menulink">', Line)+11;
  154.     EndPos := pos('</a>', Line);
  155.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  156.     SetField(fieldProducer,RemoveHTML(Value));
  157.   end;
  158.  
  159.   // fieldRating
  160.   LineNr := FindLine('m2cimsor.gif', Page, 0);
  161.   if LineNr > -1 then
  162.   begin
  163.     Line := Page.GetString(LineNr+15);
  164.     BeginPos := pos('sans-serif">', Line)+12;
  165.     EndPos := pos('%', Line);
  166.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  167.     Value := Rating(Value);
  168.     SetField(fieldRating,Value);
  169.   end;
  170.  
  171.   // fieldLength
  172.   LineNr := FindLine('film hossza</font>', Page, 0);
  173.   if LineNr > -1 then
  174.   begin
  175.     Line := Page.GetString(LineNr+5);
  176.     BeginPos := pos('"#000000">', Line)+9;
  177.     Delete(line,1,BeginPos);
  178.     EndPos := pos(' ', Line);
  179.     Value := copy(Line, 1, EndPos-1);
  180.     SetField(fieldLength,RemoveHTML(Value));
  181.   end;
  182.  
  183.   LineNr := FindLine('>Feliratok<', Page, 0);
  184.   if LineNr > -1 then
  185.   begin
  186.     Line := Page.GetString(LineNr+6);
  187.     BeginPos := pos('sans-serif">', Line)+12;
  188.     EndPos := pos('</font>', Line);
  189.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  190.     SetField(fieldSubtitles,RemoveHTML(Value));
  191.   end;
  192.  
  193.   LineNr := FindLine('>Hangsßvok<', Page, 0);
  194.   if LineNr > -1 then
  195.   begin
  196.     Adder := 5;
  197.     repeat
  198.       Value2 := '';
  199.       Line := Page.GetString(LineNr + Adder);
  200.       BeginPos := pos('size="1">', Line);
  201.       if BeginPos > 1 then
  202.       begin
  203.         BeginPos := Beginpos + 9;
  204.         EndPos := pos('<br>',Line);
  205.         Value := copy(Line, BeginPos, EndPos - BeginPos);
  206.         Line := Page.GetString(LineNr + Adder + 1);
  207.         if pos('hang/1.gif',Line) > 0 then Value2 := '(DD5.1)';
  208.         if pos('hang/2.gif',Line) > 0 then Value2 := '(Sztereo)';
  209.         if pos('hang/3.gif',Line) > 0 then Value2 := '(Surround)';
  210.         if pos('hang/4.gif',Line) > 0 then Value2 := '(Mono)';
  211.         if pos('hang/5.gif',Line) > 0 then Value2 := '(Mono)';
  212.         if pos('hang/6.gif',Line) > 0 then Value2 := '(DTS)';
  213.         if pos('hang/7.gif',Line) > 0 then Value2 := '(DD5.1)';
  214.         if pos('hang/12.gif',Line) > 0 then Value2 := '(DD5.0)';
  215.         if pos('hang/13.gif',Line) > 0 then Value2 := '(3.0)';
  216.         if pos('hang/14.gif',Line) > 0 then Value2 := '(4.0)';
  217.         if pos('hang/15.gif',Line) > 0 then Value2 := '(DD5.1EX)';
  218.         if pos('hang/16.gif',Line) > 0 then Value2 := '(DD4.1)';
  219.         if pos('hang/17.gif',Line) > 0 then Value2 := '(DTS ES)';
  220.         if FullValue > '' then Fullvalue := Fullvalue + ', ';
  221.         FullValue := FullValue + Value + ' ' + Value2;
  222.       end
  223.       Adder := Adder + 1;
  224.     until pos('eeeeee', Line) > 0;
  225.     SetField(fieldLanguages,RemoveHTML(FullValue));
  226.   end;
  227.  
  228.   // fieldComments Title
  229.   LineNr := FindLine('kepek/kepform/', Page, 0);
  230.   FullValue := '';
  231.   if LineNr > -1 then
  232.   begin
  233.     repeat
  234.       Line := Page.GetString(LineNr);
  235.  
  236.       BeginPos := pos('kepek/kepform/', Line);
  237.       if BeginPos > 1 then
  238.       begin
  239.         BeginPos := BeginPos + 14;
  240.         EndPos := pos('">', Line);
  241.         Value := copy(Line, BeginPos, EndPos - BeginPos);
  242.         Value := GetPicFormat(Value);
  243.         if FullValue > '' then Fullvalue := Fullvalue + ', ';
  244.         FullValue := FullValue + Value;
  245.  
  246.         Delete(Line,1,EndPos);
  247.         BeginPos := pos('kepek/kepform/', Line);
  248.         if BeginPos > 1 then
  249.         begin
  250.           BeginPos := BeginPos + 14;
  251.           EndPos := pos('">', Line);
  252.           Value := copy(Line, BeginPos, EndPos - BeginPos);
  253.           Value := GetPicFormat(Value);
  254.           if FullValue > '' then Fullvalue := Fullvalue + ', ';
  255.           FullValue := FullValue + Value;
  256.         end
  257.       end
  258.       LineNr := FindLine('kepek/kepform/', Page, LineNr);
  259.     until LineNr > -1;
  260.     SetField(fieldComments,FullValue);
  261.   end;
  262.  
  263.   // Picture
  264.   LineNr := FindLine('cover/nagy/', Page, 0);
  265.   if LineNr > -1 then
  266.   begin
  267.     Line := Page.GetString(LineNr);
  268.     BeginPos := pos('cover/nagy/', Line);
  269.     Delete(Line, 1, BeginPos-1);
  270.     EndPos := pos(',', Line);
  271.     Value := copy(Line, 1, EndPos - 2);
  272.     GetPicture('http://www.xpress.hu/dvd/' + Value, False);
  273.   end;
  274.  
  275.  
  276.   // fieldTranslated Title
  277.   LineNr := FindLine('#cc3300', Page, 0);
  278.   Line := Page.GetString(LineNr);
  279.   if LineNr > -1 then
  280.   begin
  281.     BeginPos := pos('#cc3300', Line)+12;
  282.     EndPos := pos('</b>', Line);
  283.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  284.     SetField(fieldTranslatedTitle,RemoveHTML(Value));
  285.   end;
  286.  
  287.   // Original Title & Year Country
  288.   if LineNr > -1 then
  289.   begin
  290.   Line := Page.GetString(LineNr+1);
  291.   BeginPos := pos('#000000', Line)+8;
  292.   Delete(Line, 1, BeginPos);
  293.   Value := Line;
  294.   SetField(fieldOriginalTitle, RemoveHTML(Value));
  295.   end;
  296.  
  297.   if LineNr > -1 then
  298.   begin
  299.     Line := Page.GetString(LineNr+2);
  300.     BeginPos := pos('(', Line) + 1;
  301.     EndPos := Pos('-', Line);
  302.     Value := copy(Line, BeginPos, EndPos - BeginPos-1);
  303.     SetField(fieldCountry, Value);
  304.   end;
  305.   
  306.   if LineNr > -1 then
  307.   begin
  308.     Line := Page.GetString(LineNr+2);
  309.     BeginPos := pos('-', Line) + 1;
  310.     EndPos := Pos(')', Line);
  311.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  312.     SetField(fieldYear, Value);
  313.   end;
  314.  
  315.   // Director
  316.   LineNr := FindLine('Rendezte:', Page, 0);
  317.   if LineNr > -1 then
  318.   begin
  319.     Line := Page.GetString(LineNr+1);
  320.     FullValue := '';
  321.     repeat
  322.       BeginPos := pos('menulink">', Line) + 9;
  323.       Delete(Line,1,BeginPos);
  324.       EndPos := pos('</a>', Line)-1;
  325.       Value := copy(Line, 1, EndPos);
  326.       HTMLDecode(Value);
  327.       if FullValue > '' then Fullvalue := Fullvalue + ', ';
  328.       FullValue := FullValue + Value;
  329.       Delete(Line, 1, EndPos);
  330.     until pos('menulink">', Line) = 0;
  331.  
  332.     SetField(fieldDirector, RemoveHTML(FullValue));
  333.   end;
  334.  
  335.   // Actors
  336.   LineNr := FindLine('>Szerepl⌡k:<', Page, 0);
  337.   if LineNr > -1 then
  338.   begin
  339.     Line := Page.GetString(LineNr+1);
  340.     FullValue := '';
  341.     repeat
  342.       BeginPos := pos('NEV=', Line) + 4;
  343.       EndPos := pos('VID', Line);
  344.       Value := copy(Line, BeginPos, EndPos - BeginPos-1);
  345.       HTMLDecode(Value);
  346.       if FullValue > '' then Fullvalue := Fullvalue + ', ';
  347.       FullValue := FullValue + Value;
  348.       Delete(Line, 1, EndPos);
  349.     until pos('NEV=', Line) = 0;
  350.     
  351.     SetField(fieldActors, RemoveHTML(FullValue));
  352.   end;
  353.  
  354.   //Category
  355.   LineNr := FindLine('>M√faj:<', Page, 0);
  356.   if LineNr > -1 then
  357.   begin
  358.     Line := Page.GetString(LineNr + 1);
  359.     BeginPos := pos('#990000">', Line) + 9;
  360.     EndPos := pos('</', Line);
  361.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  362.     SetField(fieldCategory, RemoveHTML(Value));
  363.   end;
  364.  
  365.   //Description
  366.   LineNr := FindLine('>Tartalom:<', Page, 0);
  367.   if LineNr > -1 then
  368.   begin
  369.     Adder := 6;
  370.     Line := Page.GetString(LineNr + 5);
  371.     BeginPos := pos('color="#000000">', Line);
  372.     Delete(Line, 1, BeginPos+15);
  373.     FullValue := RemoveHTML(Line);
  374.     repeat
  375.       Value := Page.GetString(LineNr + Adder);
  376.       FullValue := FullValue + Value;
  377.       Adder := Adder + 1 ;
  378.     until (pos('</td>', Value) > 0);
  379.  
  380.     SetField(fieldDescription, RemoveHTML(FullValue));
  381.   end;
  382.  
  383.   DisplayResults;
  384. end;
  385.  
  386. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  387. var
  388.   Line: string;
  389.   MovieTitle, MovieAddress,OTitle: string;
  390.   StartPos: Integer;
  391. begin
  392.   repeat
  393.     LineNr := LineNr + 1;
  394.     Line := Page.GetString(LineNr);
  395.     StartPos := pos('color="000000">', Line);
  396.     if StartPos > 0 then
  397.     begin
  398.       StartPos := pos('FILMAZ=', Line)+7;
  399.       MovieAddress := copy(Line, StartPos, pos('VID', Line) - StartPos - 5);
  400.  
  401.       StartPos := pos('color="000000">', Line)+15;
  402.       MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos - 39);
  403.  
  404.       LineNr := FindLine('<font size="1"><i>', Page, LineNr+1);
  405.       Line := Page.GetString(LineNr);
  406.       StartPos := pos('<i>', Line)+3;
  407.       OTitle := copy(Line, StartPos, pos('<br>', Line) - StartPos);
  408.  
  409.       PickTreeAdd(MovieTitle+'--'+OTitle, 'http://www.xpress.hu/dvd/film.asp?FILMAZ=' + MovieAddress);
  410.     end;
  411.   until pos('</html>', Line) > 0;
  412. end;
  413.  
  414. begin
  415.   if CheckVersion(3,4,0) then
  416.   begin
  417.     MovieName := GetField(fieldOriginalTitle);
  418.     if MovieName = '' then
  419.       MovieName := GetField(fieldTranslatedTitle);
  420.     if Input('Xpress.hu Import', 'Add meg a filme cφmΘt:', MovieName) then
  421.     begin
  422.       AnalyzePage('http://www.xpress.hu/dvd/keres.asp?keres='+AddHTML(MovieName)+'&VID=12219327439007175&GOMB=1');
  423.     end;
  424.   end else
  425.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
  426. end.
  427.  
  428.